package com.xiefengf.rabbitmq.producer.service;

import cn.hutool.json.JSONUtil;
import com.xiefengf.rabbitmq.producer.utils.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;

/**
 * @author xiefengf
 * @version 1.0
 * @date 2024/1/10 23:58
 *
 * RabbitMQ基础 - Fanout方式
 *
 */
@Service
public class FanoutProductService {

    @Resource(name = "RabbitTemplate")
    private RabbitTemplate rabbitTemplate;

    /**
     * 下订单服务 发送微信/发送短信/发送邮件
     * @param userId
     * @param productId
     * @param msg
     */
    public void makeOrder(Integer userId,Integer productId,String msg){
        // 1、模拟用户下订单
        // String orderNum = UUID.randomUUID().toString();
        // 2: 根据商品id productId 去查询商品的库存
        // int numStore = productSerivce.getProductNum(productId);
        // 3:判断库存是否充足
        // if(num >  numStore ){ return  "商品库存不足..."; }
        // 4: 下单逻辑
        // orderService.saveOrder(order);
        // 5: 下单成功要扣减库存
        // productService.removeProductNum(productId);
        // 6: 下单完成以后 发送订单信息给RabbitMQ （fanout模式）
        HashMap<String, Object> map = new HashMap<>();
        map.put("userId",userId);
        map.put("productId",productId);
        map.put("fanout_msg",msg);
        rabbitTemplate.convertAndSend(StringUtils.FANOUT_EXCHANGE_NAME,StringUtils.FANOUT_ROUTE_KEY, JSONUtil.toJsonStr(map));
    }



}
